1. Technical Field
The present invention relates to network processing and, in particular searching for and retrieving objects such as files on networked computers.
2. Description of Related Art
When a user wishes to obtain a shared object (e.g. a file) from an unknown location on the network (e.g. a client within a peer-to-peer network such as Gnutella), the user will issue a request via the client software (for example, a peer-to-peer client, file system, etc.). The node where the request is generated is known as the requestor. The request is routed or broadcast along one or more paths along the network, and any node that possesses the desired object may respond. This node responds to the requesting node with the object either directly or through the request path. This existing mechanism requires a user to explicitly issue requests for objects by name (e.g. happy_birthday.mp3). If a user wishes for a shared object that is similar to objects already retrieved, it is up to the user to employ a manual process of determining what objects are similar and then to search for those objects on the network.
There are many technologies for determining the amount of similarity among a set of files. One technique is to fingerprint each file (e.g. with Rabin fingerprints) and match m of n fingerprints to determine a degree of similarity. So far, this work has been done only for static file sets. In addition, there are many products that determine whether two audio files are similar by looking at the encoding. These techniques will look at tempo and style.
There are systems that provide a means for automatically downloading music files. For example, there are systems that use an agent, which waits for a file to become available at a central server or peer node. The system requires a user to specify the filename and has the limitation that it cannot take into consideration variations in file names. In addition, it does not include any means for finding similar objects.
Many e-commerce Web sites will offer “similar” products to customers. For example, as a customer adds product Y to their shopping cart, the Web page may have some text “Those that bought Y also liked X and Z.” The process of correlating products is either a manual process, or an automated process tracking buying habits. Neither of these actually compares using the contents of the products.